﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Cofe.Core.Property;

namespace Cofe.Core.EntryType
{
    /// <summary>
    /// Use IEntryTypeIdentifier, IEntryTypeProvider and other classes to provide 
    /// EntryTypeKey and IEntryTypeInfo given a IPropertyHost, also cache these 
    /// IEntryTypeInfo.
    /// </summary>
    public interface IEntryTypeInfoManager : ICofeService
    {        
        IEnumerable<string> KnownEntryTypeKey { get; }
        string GetEntryTypeKey(IPropertyHost propertyHost);
        IPropertyProvider GetRootPropertyProvider(string rootKey);
        Task<IPropertyProvider> GetEntryTypeInfoPPAsync(string rootKey, string entryTypeKey);        
    }   
}
